/**
 * @param {number} x
 * @return {boolean}
 * 此种解法有整数溢出的问题
 */
function isPalindrome(x) {
    if (x < 0) return false
    let temp = 0, copyx = x
    while (copyx != 0) {
        temp = temp * 10 + copyx % 10
        copyx = ~~(copyx / 10)
    }
    return x === temp
}


/**
 * @param {number} x
 * @return {boolean}
 * 官方解：翻转后半部分的数字，原数字依次去除后半部分数字，
 * 通过判断反转后的数字和原数字的大小，停止循环
 */
function isPalindrome(x) {
    if (x < 0 || (x % 10 === 0 && x !== 0)) return false
    let reversex = 0
    while (x > reversex) {
        reversex = reversex * 10 + x % 10
        x = ~~(x / 10)
    }
    return x === reversex || x === ~~(reversex / 10)
}